*/
skip_clocktick:
- __asm__ __volatile__ ( "mov"__OS" %0, %%cr3" : : "r" (cr3) : "memory" );
+ __asm__ __volatile__ ( "mov %0, %%cr3" : : "r" (cr3) : "memory" );
/*
* STEP 3. Update this CPU's timestamp. Note that this happens *after*
error |= __vmwrite(GUEST_EFLAGS, eflags);
error |= __vmwrite(GUEST_INTERRUPTIBILITY_INFO, 0);
-#ifdef __i386__
__asm__ __volatile__ ("mov %%dr7, %0\n" : "=r" (dr7));
-#else
- __asm__ __volatile__ ("movq %%dr7, %0\n" : "=r" (dr7));
-#endif
error |= __vmwrite(GUEST_DR7, dr7);
error |= __vmwrite(GUEST_VMCS0, 0xffffffff);
error |= __vmwrite(GUEST_VMCS1, 0xffffffff);
host_env->idtr_base = desc.address;
error |= __vmwrite(HOST_IDTR_BASE, host_env->idtr_base);
-#ifdef __i386__
- __asm__ __volatile__ ("movl %%cr0,%0" : "=r" (crn) : );
-#else
- __asm__ __volatile__ ("movq %%cr0,%0" : "=r" (crn) : );
-#endif
+ __asm__ __volatile__ ("mov %%cr0,%0" : "=r" (crn) : );
host_env->cr0 = crn;
error |= __vmwrite(HOST_CR0, crn); /* same CR0 */
/* CR3 is set in vmx_final_setup_hostos */
-#ifdef __i386__
- __asm__ __volatile__ ("movl %%cr4,%0" : "=r" (crn) : );
-#else
- __asm__ __volatile__ ("movq %%cr4,%0" : "=r" (crn) : );
-#endif
+ __asm__ __volatile__ ("mov %%cr4,%0" : "=r" (crn) : );
host_env->cr4 = crn;
error |= __vmwrite(HOST_CR4, crn);
error |= __vmwrite(HOST_EIP, (unsigned long) vmx_asm_vmexit_handler);
*/
static __inline__ unsigned long find_first_clear_bit(unsigned long word)
{
- __asm__("bsf"__OS" %1,%0"
+ __asm__("bsf %1,%0"
:"=r" (word)
:"r" (~word));
return word;
static __inline__ unsigned long find_first_set_bit(unsigned long word)
{
- __asm__("bsf"__OS" %1,%0"
+ __asm__("bsf %1,%0"
:"=r" (word)
:"r" (word));
return word;
{
unsigned long cr3;
__asm__ __volatile__ (
- "mov"__OS" %%cr3, %0" : "=r" (cr3) : );
+ "mov %%cr3, %0" : "=r" (cr3) : );
return cr3;
}
#define read_cr0() ({ \
unsigned long __dummy; \
__asm__( \
- "mov"__OS" %%cr0,%0\n\t" \
+ "mov %%cr0,%0\n\t" \
:"=r" (__dummy)); \
__dummy; \
})
#define write_cr0(x) \
- __asm__("mov"__OS" %0,%%cr0": :"r" ((unsigned long)x));
+ __asm__("mov %0,%%cr0": :"r" ((unsigned long)x));
#define read_cr4() ({ \
unsigned long __dummy; \
__asm__( \
- "mov"__OS" %%cr4,%0\n\t" \
+ "mov %%cr4,%0\n\t" \
:"=r" (__dummy)); \
__dummy; \
})
#define write_cr4(x) \
- __asm__("mov"__OS" %0,%%cr4": :"r" ((unsigned long)x));
+ __asm__("mov %0,%%cr4": :"r" ((unsigned long)x));
/*
* Save the cr4 feature set we're using (ie
static inline void set_in_cr4 (unsigned long mask)
{
+ unsigned long dummy;
mmu_cr4_features |= mask;
- __asm__("mov"__OS" %%cr4,%%"__OP"ax\n\t"
- "or"__OS" %0,%%"__OP"ax\n\t"
- "mov"__OS" %%"__OP"ax,%%cr4\n"
- : : "irg" (mask)
- :"ax");
+ __asm__ __volatile__ (
+ "mov %%cr4,%0\n\t"
+ "or %1,%0\n\t"
+ "mov %0,%%cr4\n"
+ : "=&r" (dummy) : "irg" (mask) );
}
static inline void clear_in_cr4 (unsigned long mask)
{
+ unsigned long dummy;
mmu_cr4_features &= ~mask;
- __asm__("mov"__OS" %%cr4,%%"__OP"ax\n\t"
- "and"__OS" %0,%%"__OP"ax\n\t"
- "mov"__OS" %%"__OP"ax,%%cr4\n"
- : : "irg" (~mask)
- :"ax");
+ __asm__ __volatile__ (
+ "mov %%cr4,%0\n\t"
+ "and %1,%0\n\t"
+ "mov %0,%%cr4\n"
+ : "=&r" (dummy) : "irg" (~mask) );
}
/*
"js 2f\n" \
"1:\n" \
".section .text.lock,\"ax\"\n" \
- "2:\tpush"__OS" %%"__OP"ax\n\t" \
- "lea"__OS" %0,%%"__OP"ax\n\t" \
+ "2:\tpush %%"__OP"ax\n\t" \
+ "lea %0,%%"__OP"ax\n\t" \
"call " helper "\n\t" \
- "pop"__OS" %%"__OP"ax\n\t" \
+ "pop %%"__OP"ax\n\t" \
"jmp 1b\n" \
".previous" \
:"=m" (*(volatile int *)rw) : : "memory")
"jnz 2f\n" \
"1:\n" \
".section .text.lock,\"ax\"\n" \
- "2:\tpush"__OS" %%"__OP"ax\n\t" \
- "lea"__OS" %0,%%"__OP"ax\n\t" \
+ "2:\tpush %%"__OP"ax\n\t" \
+ "lea %0,%%"__OP"ax\n\t" \
"call " helper "\n\t" \
- "pop"__OS" %%"__OP"ax\n\t" \
+ "pop %%"__OP"ax\n\t" \
"jmp 1b\n" \
".previous" \
:"=m" (*(volatile int *)rw) : : "memory")